const myStorage = window.sessionStorage

export const ListConfigSave = {
  methods: {
    /****************** 本地缓存的几种方法 **********************/
    _storage_set(key, value, needCover) {
      const pathName = window.location.pathname // 将pathname作为第一层命名空间
      let _store = myStorage.getItem(pathName)
      _store = !_store ? {} : JSON.parse(_store) // 之前此路由没存过就初始化一个对象
      
      let old_value = _store[key]
      let new_value
      if ( // 如果新值与老值都是对象且没有覆盖标识就采取拓展模式合并
        old_value instanceof Object &&  !(old_value instanceof Array)
        && value instanceof Object && !(value instanceof Array)
        && !needCover) {
        new_value = {
          ...old_value,
          ...value
        }
      } else { // 否则直接覆盖老值
        new_value = value
      }
      _store[key] = new_value

      myStorage.setItem(pathName, JSON.stringify(_store))
    },
    _storage_get(key) {
      const pathName = window.location.pathname // 将pathname作为第一层命名空间
      let _store = myStorage.getItem(pathName)
      _store = !_store ? {} : JSON.parse(_store) // 之前此路由没存过就初始化一个对象
      return _store[key]
    },
    _storage_remove(key) {
      const pathName = window.location.pathname // 将pathname作为第一层命名空间
      let _store = myStorage.getItem(pathName)
      _store = !_store ? {} : JSON.parse(_store) // 之前此路由没存过就初始化一个对象
      delete _store[key] 
      myStorage.setItem(pathName, JSON.stringify(_store))
    },
    _storage_clear() {
      const pathName = window.location.pathname // 将pathname作为第一层命名空间
      let _store = {}
      myStorage.setItem(pathName, JSON.stringify(_store))
    },

    

  },
  watch: {
    initColsProps(v) {
      this._storage_set('initColsProps', v)
    }
  },
  created() {
    let initColsProps = this._storage_get('initColsProps')
    if (initColsProps) this.initColsProps = initColsProps
  }
}